package com.java.enums.sample03;

public class Client {
	public static final int RED = 0; 
	public static final int BLUE = 1; 
	public static final int GREEN = 2; 
	
	public static void main(String[] args) throws Exception {
		//类加载时：所有枚举值被实例化（调用私有构造方法）
		ColorEnum ce = ColorEnum.valueOf(ColorEnum.class, "RED");
		test(ce);
		ce.doSomeThing();
		ColorEnum green = ColorEnum.valueOf(ColorEnum.class, "GREEN");
		green.met();
	}

	/**
	 * 若这里传递一个整形变量做参数的话，会造成类型不安全的问题，我可以传递成员常量RED，也可以随便传个整数。
	 * 同时若静态产量定义在非本类之中的话，则只能通过类名.常量名来引用，因为它没有命名空间。
	 * 假设一些类或方法使用了静态成员变量（在编译器就被确定），则该成员变量若被修改。则其他使用该成员变量的类需从新编译。
	 * 一致性差。
	 * 调试不方便，使用整形常量，调试时日志中可能只是一些数字。只有程序员自己看得懂。
	 * @throws Exception 
	 */
	public static void test(ColorEnum ce) throws Exception{
		//swith条件语句可以识别枚举类型
		switch(ce){
			case RED:
				System.out.println("枚举常量的名称："+ce.name());
			break;
			case GREEN:
				System.out.println("枚举常量的名称："+ce.name());
			break;
			case BLUE:
				System.out.println("枚举常量的名称："+ce.name());
			break;
			default:
				throw new Exception();
		}
	}
}
